package com.naiterui.ehp.ps.sms.service;

import java.util.List;
import java.util.Map;

import com.naiterui.ehp.ps.sms.bean.Signature;
import com.naiterui.ehp.ps.sms.exception.SmsBusinessException;
import com.naiterui.ehp.ps.sms.vo.SignatureVO;

/**
 * 签名信息service层接口
 *
 * @author
 * @since 1.0.0
 */
public interface ISignatureService {
    /**
     * 获取所有签名信息
     * ISignatureService.getAll()
     *
     * @return
     *
     * @Author
     * @Date 2018年7月23日
     * @since 1.0.0
     */
    List<SignatureVO> getAll();

    /**
     * 获取签名id和名称的对照关系
     * ISignatureService.getSignatureMap()
     *
     * @return
     *
     * @Author
     * @Date 2018年7月23日
     * @since 1.0.0
     */
    Map<Integer, Signature> getSignatureMap();

    /**
     * 新增签名
     * ISignatureService.addSignature()
     *
     * @param signatureVO
     *
     * @Author
     * @Date 2018年7月23日
     * @since 1.0.0
     */
    void addSignature(SignatureVO signatureVO);

    /**
     * 根据id获取签名信息
     * ISignatureService.getSignatureByID()
     *
     * @param id
     *
     * @return
     *
     * @Author
     * @Date 2018年7月23日
     * @since 1.0.0
     */
    SignatureVO getSignatureByID(Integer id);

    /**
     * 获取默认签名
     * ISignatureService.getDefaultSignature()
     *
     * @return
     *
     * @Author
     * @Date 2018年7月24日
     * @since 1.0.0
     */
    SignatureVO getDefaultSignature();

    /**
     * 修改签名信息
     * ISignatureService.updateSignature()
     *
     * @param signatureVO
     *
     * @throws SmsBusinessException
     * @Author
     * @Date 2018年7月23日
     * @since 1.0.0
     */
    void updateSignature(SignatureVO signatureVO) throws SmsBusinessException;

    /**
     * 设置默认签名
     * ISignatureService.setDefaultSignature()
     *
     * @param id
     *
     * @throws SmsBusinessException
     * @Author
     * @Date 2018年7月24日
     * @since 1.0.0
     */
    void saveDefaultSignature(Integer id) throws SmsBusinessException;

    /**
     * 根据id获取当前发送的模版签名
     * ISignatureService.getSendSignatureFromCache()
     *
     * @param id
     *
     * @return
     *
     * @Author
     * @Date 2018年7月24日
     * @since 1.0.0
     */
    SignatureVO getSendSignatureFromCache(Integer id);
}
